package com.itheima.backstage.controller;

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.itheima.backstage.manager.LoginManager;
import com.itheima.service.db.WeChatUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


//微信扫码登入模块
//其他人待添加俩个sql表  1后台管理员登入表  2.微信登入记录表

@RestController
public class LoginController {

    @Autowired
    private LoginManager loginManager;


    //流程
    //扫码后前台会传一个code =>将前缀,账号,密码和code拼接起来 可以获得一个Json串
    //通过Json将Json串封装到一个实体类 此实体类也是官方提供的实体类   Token类
    //通过实体类中的 access_token和openid  拼接上 回调URL https://api.weixin.qq.com/sns/userinfo,又可以获得到一个用户信息的Json串
    //再通过Json将这个Json串封装到一个对象中(也是官方提供的) WeChatUser
    //这个对象 就有微信用户的信息了 WeChatUser


    //

    //微信扫码登入后台
    @GetMapping("/weixinlogin")
    public String wxLogin(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 1.获取code
        String code = request.getParameter("code");

        //接收参数 实现类会响应一个重定向地址字符串  如果扫码成功定向到后台主页  扫码失败 继续会首页手动输入账号密码进入
        String indexUrl = loginManager.wxLogin(code);

        //重定向
        response.sendRedirect(indexUrl);
        //重定路径
        return "success";
    }


    //手动登入后台
    @PostMapping("/user/login")
    public String login(@RequestBody Map map) {
        String admin = String.valueOf(map.get("admin"));
        String pwd = String.valueOf(map.get("pwd"));


        //将参数传入manager
        String str = loginManager.login(admin, pwd);


        //返回响应字符串
        return str;
    }




}
